// 导入 Flutter 的 material 库，该库提供了构建 Material Design 风格界面所需的组件和工具
import 'package:flutter/material.dart';

/// WebViewPage 是一个有状态的组件，用于创建一个带有标题的页面
/// 它接收一个必需的 `title` 参数，用于设置页面的标题
class WebViewPage extends StatefulWidget {
  /// 页面的标题，使用 final 修饰确保其不可变
  final String? title;

  //链接的参数
  final String? url;

  /// 构造函数，接收一个必需的 `title` 参数和可选的 `key` 参数
  const WebViewPage({super.key, this.title, this.url});

  /// 创建并返回一个 _WebviewPageState 实例，用于管理 WebViewPage 的状态
  @override
  State<StatefulWidget> createState() {
    return _WebviewPageState();
  }
}

/// _WebviewPageState 是 WebViewPage 的状态类，负责管理页面的状态和构建 UI
class _WebviewPageState extends State<WebViewPage> {
  // 定义一个可空的字符串变量 name，用于存储从路由参数中获取的名称
  String? name;

  /// 重写 initState 方法，该方法在组件初始化时调用
  @override
  void initState() {
    // 调用父类的 initState 方法
    super.initState();
    // 添加一个帧回调，确保在组件渲染完成后执行代码
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      // 从当前路由的设置中获取参数
      var map = ModalRoute.of(context)?.settings.arguments;
      // 检查参数是否为 Map 类型
      if (map is Map) {
        // 从 Map 中获取名为 "name" 的值并赋值给 name 变量
        name = map["name"];
        // 调用 setState 方法通知 Flutter 框架状态已改变，需要重新构建组件
        setState(() {});
      }
    });
  }

  /// build 方法是 State 类的核心方法，用于构建页面的 UI
  @override
  Widget build(BuildContext context) {
    // Scaffold 是一个基础布局组件，提供了默认的 Material Design 布局结构
    return Scaffold(
        // AppBar 是页面的顶部导航栏
        appBar: AppBar(
          // 显示传入的标题，如果 name 为 null 则显示一个空格
          title: Text(name ?? " "),
        ),
        // body 是页面的主体内容，使用 SafeArea 避免内容被系统状态栏等遮挡
        body: SafeArea(
          // InkWell 是一个可点击的组件，用于处理点击事件
          child: InkWell(
            // 点击 InkWell 时执行的回调函数，这里是返回上一页
            onTap: () {
              // 使用 Navigator.pop 方法返回上一个页面
              Navigator.pop(context);
            },
            // InkWell 的子组件，使用 SizedBox 来设置大小
            child: const SizedBox(
              // 设置 SizedBox 的宽度为 200
              width: 200,
              // 设置 SizedBox 的高度为 50
              height: 50,
              // SizedBox 内显示的文本，点击该文本可返回上一页
              child: Text("返回"),
            ),
          ),
        ));
  }
}
